package org.joget.workflow.controller; import org.joget.commons.util.SetupManager; import org.joget.commons.spring.model.ResourceBundleMessage; import org.joget.commons.spring.model.ResourceBundleMessageDao; import org.joget.commons.util.ResourceBundleUtil; import org.joget.commons.util.FileStore; import org.springframework.web.multipart.MultipartFile; import java.util.Arrays; import java.util.Locale; import java.io.IOException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.validation.Validator; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @Controller public class ResourceBundleMessageWebController { @Autowired private ResourceBundleMessageDao rbmDao; @Autowired private ResourceBundleUtil resourceBundleUtil; @Autowired private Validator validator; @Autowired private SetupManager setupManager; @RequestMapping("/settings/resource/message/list") public String messageList(ModelMap map) { map.addAttribute("localeList", getSortedLocalList()); return "message/messageList"; } @RequestMapping("/settings/resource/message/view/(*:id)") public String messageView(ModelMap map, @RequestParam("id") String id) { ResourceBundleMessage message = rbmDao.getMessageById(id); map.addAttribute("message", message); return "message/messageView"; } @RequestMapping("/settings/resource/message/create") public String messageCreate(ModelMap map) { map.addAttribute("message", new ResourceBundleMessage()); map.addAttribute("localeList", getSortedLocalList()); return "message/messageCreate"; } @RequestMapping(value = "/settings/resource/message/create/submit", method = RequestMethod.POST) public String messageCreateSubmit(ModelMap map, @ModelAttribute("message") ResourceBundleMessage message, BindingResult result) { validator.validate(message, result); if (result.hasErrors()) { map.addAttribute("localeList", getSortedLocalList()); return "message/messageCreate"; } rbmDao.saveOrUpdate(message); return "message/messageCreateSuccess"; } @RequestMapping("/settings/resource/message/edit/(*:id)") public String messageEdit(ModelMap map, @RequestParam("id") String id) { ResourceBundleMessage message = rbmDao.getMessageById(id); map.addAttribute("localeList", getSortedLocalList()); map.addAttribute("message", message); return "message/messageEdit"; } @RequestMapping(value = "/settings/resource/message/save", method = RequestMethod.POST) public String messageSave(@ModelAttribute("message") ResourceBundleMessage message) { ResourceBundleMessage oldMessage = rbmDao.getMessageById(message.getId()); oldMessage.setKey(message.getKey()); oldMessage.setLocale(message.getLocale()); oldMessage.setMessage(message.getMessage()); rbmDao.saveOrUpdate(oldMessage); return "message/messageEditSuccess"; } @RequestMapping("/settings/resource/message/delete") public String messageDelete(ModelMap map, @RequestParam("id") String id) { ResourceBundleMessage message = rbmDao.getMessageById(id); rbmDao.delete(message); map.addAttribute("localeList", getSortedLocalList()); return "message/messageList"; } protected String[] getSortedLocalList() { Locale[] localeList = Locale.getAvailableLocales(); String[] localeStringList = new String[localeList.length]; for (int i = 0; i < localeList.length; i++) { localeStringList[i] = localeList[i].toString(); } Arrays.sort(localeStringList); return localeStringList; } @RequestMapping("/settings/resource/message/import") public String packageImport(ModelMap map) { return "message/messageImport"; } @RequestMapping(value = "/settings/resource/message/import/submit", method = RequestMethod.POST) public String POFileUpload(ModelMap map) throws Exception { String systemLocale = ""; if(setupManager.getSettingByProperty("systemLocale") != null){ systemLocale = setupManager.getSettingByProperty("systemLocale").getValue(); } if(systemLocale.equalsIgnoreCase("")){ systemLocale = "en_US"; } try{ MultipartFile multiPartfile = FileStore.getFile("localeFile"); resourceBundleUtil.POFileImport(multiPartfile,systemLocale); }catch(IOException e){ } map.addAttribute("localeList", getSortedLocalList()); return "message/messageList"; } }